Fixed some glitches in GtkCellAreaBox keynav from my last commit.
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Thu, 9 Dec 2010 09:29:36 +0000 (18:29 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Sun, 12 Dec 2010 11:40:34 +0000 (20:40 +0900)
gtk/gtkcellareabox.c

index 8199fcc7e1577950d8f944e351abc605b04c71d6..286c67096da45436809883cda117807baa759a8a 100644 (file)
@@ -1779,25 +1779,25 @@ gtk_cell_area_box_focus (GtkCellArea      *area,
       cycle = priv->rtl ? FOCUS_NEXT : FOCUS_PREV;
       break;
     case GTK_DIR_UP: 
-      if (priv->orientation == GTK_ORIENTATION_VERTICAL)
+      if (priv->orientation == GTK_ORIENTATION_VERTICAL || !priv->last_focus_cell)
        cycle = FOCUS_PREV;
       else if (!focus_cell)
        cycle = FOCUS_LAST_CELL;
       break;
     case GTK_DIR_DOWN:
-      if (priv->orientation == GTK_ORIENTATION_VERTICAL)
-       cycle = FOCUS_PREV;
+      if (priv->orientation == GTK_ORIENTATION_VERTICAL || !priv->last_focus_cell)
+       cycle = FOCUS_NEXT;
       else if (!focus_cell)
        cycle = FOCUS_LAST_CELL;
       break;
     case GTK_DIR_LEFT:
-      if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
+      if (priv->orientation == GTK_ORIENTATION_HORIZONTAL || !priv->last_focus_cell)
        cycle = priv->rtl ? FOCUS_NEXT : FOCUS_PREV;
       else if (!focus_cell)
        cycle = FOCUS_LAST_CELL;
       break;
     case GTK_DIR_RIGHT:
-      if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
+      if (priv->orientation == GTK_ORIENTATION_HORIZONTAL || !priv->last_focus_cell)
        cycle = priv->rtl ? FOCUS_PREV : FOCUS_NEXT;
       else if (!focus_cell)
        cycle = FOCUS_LAST_CELL;